package main;

import algo_annotations.ihm.MainFrameTrtAnno;
import commons.UsageCheck;
import commons.errors.ErrorsHandler;
import commons.params_appli.ParamsAppli;
import java.io.File;
import java.net.URL;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;


public class MainClass_a {

	public MainClass_a() {
	}

	public static void main(String args[]) {


		
		if (!ParamsAppli.canLaunchAnno) {
			JOptionPane.showMessageDialog(null, "Cette version d'Autogene ne peut traiter les annotations");
			System.exit(0);
		}
		
		
		if (!UsageCheck.canUseAutogene()) {
			System.exit(0); // la fonction appelée a déjà affiché un message d'erreur clair
		}

		try {
			// Look and Feel standard de windows
			//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());


			// Fichier ini
			String fichierINI = null;
			if (args.length == 1 && args[0].endsWith(".ini") && new File(args[0]).exists())
				fichierINI = args[0];
			else {
				JFileChooser jfc = new JFileChooser();
				jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
				jfc.setFileFilter(new FileNameExtensionFilter("Fichier INI","ini"));
				int returnVal = jfc.showDialog(null, "Selectionnez le fichier INI");
				if (returnVal == JFileChooser.APPROVE_OPTION)
					fichierINI = jfc.getSelectedFile().getPath();
				else
					// Annulation par l'utilisateur
					return;
			}
			System.out.println("Fichier INI : " + fichierINI);

			ParamsAppli paramsAppli = new ParamsAppli();
			paramsAppli.init(new File(fichierINI));

//				// METHODE LANCEMENT DEPUIS NETBEANS
//				//  le fihcier ini se trouve dans le sous-rep de ressource
//				URL url = Thread.currentThread().getContextClassLoader().getResource("res/paramsAutoGene.ini");
//				System.out.println(new File(url.toURI()).exists());
//
//				ParamsAppli paramsAppli = new ParamsAppli();
//				paramsAppli.init(new File(url.toURI()));

			if (ErrorsHandler.isThereErrors()) {
				ErrorsHandler.addError("Impossible de lancer AutoGene");
				ErrorsHandler.showErrors();
				return;
			}

			java.awt.EventQueue.invokeLater(new Runnable() {
				@Override
				public void run() {
					new MainFrameTrtAnno().setVisible(true);
				}
			});
		}
		catch (Exception ex) {
			System.out.println(ex.getMessage());
			ex.printStackTrace();
		}

	}



}
